#ifndef __LINKLIST_H__
#define __LINKLIST_H__

#include <stdio.h>
#include <stdlib.h>

//数据类型
typedef int data_t;

//节点类型
typedef struct node
{
    data_t data;       //存储数据
    struct node *next; //存储下一个节点的地址
} linknode_t;

//开辟空的链表
linknode_t *linklist_create();

//头插入
int linklist_insert_head(linknode_t *head, data_t value);
//尾插入
int linklist_insert_tail(linknode_t *head, data_t value);
//按位置插入
int linklist_insert_pos(linknode_t *head, int pos, data_t value);
//按顺序插入(递增)
int linklist_insert_sort(linknode_t *head, data_t value);

//头删除
int linklist_delete_head(linknode_t *head);
//尾删除
int linklist_delete_tail(linknode_t *head);
//通用删除
int linklist_delete_pos(linknode_t *head, int pos);

//判断为空返回1  非空返回0
int linklist_is_empty(linknode_t *head);
//获取
data_t linklist_get(linknode_t *head, int pos);
//修改
int linklist_change(linknode_t *head, data_t old, data_t new);

//数据翻转
int linklist_revers(linknode_t *head);
//遍历
int linklist_show(linknode_t *head);

#endif
